package top.tagao.m02_creationalPatterns.c_02_builder;

/**
 * @author fu-xiao-liu
 * @Date 2022/7/24 18:22
 * 产品角色（Product）：Phone
 * 抽象建造者（Builder）：AbstractPhoneBuilder
 * 具体建造者(Concrete Builder）：PhoneBuilder
 * 指挥者（Director）视情况可以省略  类定义调用构造步骤的顺序 、隔离客户与对象的生产过程
 * 创建和复用特定的产品配置。
 * 创建的东西细节复杂，还必须暴露给使用者。屏蔽过程而不屏蔽细节

 */
public class Main {
    public static void main(String[] args) {
        //1.指挥者
        HouseDirector houseDirector = new HouseDirector();

        //2.创建具体建造者
        HouseBuilder houseBuilder = new CommonHouse();

        //由指挥者 命令 具体建造者建造
        House house = houseDirector.commonHouse(houseBuilder);
        System.out.println(house.toString());
        // houseBuilder.


    }
}
